package moniMaipiao;

public class ThreadExtend {
    public static void main(String[] args) {

        ThreadExtendImpl t1 = new ThreadExtendImpl();
        ThreadExtendImpl t2 = new ThreadExtendImpl();
        ThreadExtendImpl t3 = new ThreadExtendImpl();
        t1.setName("名称A");
        t2.setName("名称B");
        t3.setName("名称C");
        t1.start();
        t2.start();
        t3.start();
    }
}
class ThreadExtendImpl extends Thread{
    private static Object o = new Object(); // 多个线程，必须使用的是 同一把锁， 不能是新的锁。  解决办法： 只要使用 static，就成了类中静态数据，统一使用
    private static int ticket = 2000; // 只要使用 static，就成了类中静态数据，统一使用

    @Override
    public void run() {
        while (true){
            synchronized (o){
                if(ticket <=0)break;
//                System.out.println(Thread.currentThread().getName()+"第" + ticket+ "张票"); // 因为是继承了Thread，所以直接写super
//                System.out.println(super.getName()+"第" + ticket+ "张票"); // 因为在父类里，没重写getName,可以不写super. 直接使用.getname
                System.out.println(getName()+"第" + ticket+ "张票"); // 因为是继承了Thread，所以直接写super
                ticket--;
            }
        }
    }
}